package com.xiaoc.bulldozer.common.dao;

import java.util.List;
import java.util.Set;

import com.xiaoc.bulldozer.common.dto.WeixinFormIdDto;
import com.xiaoc.bulldozer.common.dto.WeixinFormIdQueryDto;
import com.xiaoc.bulldozer.common.model.WeixinFormId;
import org.apache.ibatis.annotations.Param;

/**
 * WeixinFormId Mapper 接口
 *
 * @author Danfo Yam
 * @date 2018-09-26 14:49:59
 */
public interface WeixinFormIdMapper {

    /**
     * 根据条件查询WeixinFormId数量
     *
     * @param WeixinFormIdQueryDto
     * @return 满足查询条件的记录数量
     */
    public Integer getWeixinFormIdCountByCondition(WeixinFormIdQueryDto weixinFormIdQueryDto);

    /**
     * 根据条件分页查询WeixinFormId列表
     *
     * @param WeixinFormIdQueryDto
     * @return 满足查询条件的WeixinFormId列表
     */
    public List<WeixinFormId> getWeixinFormIdListByCondition(WeixinFormIdQueryDto weixinFormIdQueryDto);

    /**
     * 根据Id获取WeixinFormId
     *
     * @param id
     * @return WeixinFormId对象
     */
    public WeixinFormId getWeixinFormIdById(Integer id);

    /**
     * 获取所有WeixinFormId列表
     *
     * @return WeixinFormId列表
     */
    public List<WeixinFormId> getAllWeixinFormIdList();

    /**
     * 新增WeixinFormId
     *
     * @param weixinFormId
     * @return void
     */
    public void save(WeixinFormId weixinFormId);

    /**
     * 更新WeixinFormId
     *
     * @param weixinFormId
     * @return void
     */
    public void update(WeixinFormId weixinFormId);

    /**
     * 根据Id删除WeixinFormId
     *
     * @param id
     * @return void
     */
    public void deleteById(Integer id);

    public List<WeixinFormId> getWeixinFormIdListByStatusAndCreateTime(@Param("status") Integer status, @Param("createTime") Long createTime);


    public void updateStatus(WeixinFormId weixinFormId);

    /**
     * 根据userIdList 获取没有贷款申请 userId列表
     *
     * @param userIdList
     * @return
     */
    public List<Integer> getUserIdListNoLoan(@Param("userIdList") Set<Integer> userIdList);


    /**
     * 更新过期formId
     *
     * @param weixinFormId
     */
    public void updateTimeoutStatus(WeixinFormId weixinFormId);


    /**
     * 通过手机号获取 WeixinFormId
     *
     * @param phoneNumberSet
     * @return
     */
    public List<WeixinFormIdDto> getWeixinFormIdListByPhoneNumberSet(@Param("phoneNumberSet") Set<String> phoneNumberSet);


    /**
     * 批量更新状态
     *
     * @param weixinFormIdDtoList
     */
    public void updateStatusBatch(@Param("weixinFormIdList") List<WeixinFormIdDto> weixinFormIdDtoList, @Param("status") Integer status, @Param("updateTime") long updateTime);
}
